package com.eastmoney.emis.edda.infrastructure.hsbc;

import com.eastmoney.emis.edda.infrastructure.hsbc.dto.*;
import com.eastmoney.emis.edda.projection.HsbcEddaContext;

/**
 * @description: Description
 * @projectName: EDDA-HSBC
 * @package: com.eastmoney.emis.edda.infrastructure
 * @author: 汪程程
 * @date: 2022/9/26 4:30 PM
 * @version: 1.0
 */
public interface HsbcEddaApi {

    ThreadLocal<HsbcEddaContext> CONTEXT = ThreadLocal.withInitial(HsbcEddaContext::new);

    /**
     * 授权
     */
    AuthResp authorization(AuthReq authReq);

    /**
     * 查询授权状态
     */
    AuthEnquiryResp authorizationStatus(AuthEnquiryReq authEnquiryReq);

    /**
     * OTP确认，仅汇丰账户
     */
    OTPConfirmResp otpConfirmation(OTPConfirmReq otpConfirmReq);

    /**
     * 重新生成OTP验证码，仅汇丰账户
     */
    OTPRegenerationResp reGenerateOtpCode(OTPRegenerationReq otpRegenerationReq);

    /**
     * 入金
     */
    InstructionResp debitInstruction(InstructionReq instructionReq);

    /**
     * 入金状态
     */
    InstructionStatusResp debitInstructionStatus(InstructionStatusReq instructionStatusReq);

    ReportsResp report(ReportsReq reportsReq);

}
